package com.sitech.ibnms.common.form;

import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author liujhc
 */
public class TreeNode {

	/**
	 * 节点名称
	 */
	private String name;
	/**
	 * 节点ID
	 */
	private String id;
	/**
	 * 父节点ID
	 */
	private String pId;
	/**
	 * 是否有子节点
	 */
	private boolean isParent = true;
	/**
	 * 节点的 checkBox / radio 的 勾选状态。[setting.check.enable = true &
	 * treeNode.nocheck = false 时有效]
	 *
	 * 1、如果不使用 checked 属性设置勾选状态，请修改 setting.data.key.checked * 2、建立 treeNode
	 * 数据时设置 treeNode.checked = true 可以让节点的输入框默认为勾选状态
	 *
	 * 3、修改节点勾选状态，可以使用 treeObj.checkNode / checkAllNodes / updateNode
	 * 方法，具体使用哪种请根据自己的需求而定
	 *
	 * 4、为了解决部分朋友生成 json 数据出现的兼容问题, 支持 "false","true" 字符串格式的数据
	 *
	 * 默认值：false
	 *
	 */
	private boolean checked;
	/**
	 * 设置节点的 checkbox / radio 是否禁用 [setting.check.enable = true 时有效]
	 *
	 * 默认值：false
	 *
	 */
	private boolean chkDisabled;
	/**
	 * 记录 treeNode 节点的 展开 / 折叠 状态。
	 *
	 * 1、初始化节点数据时，如果设定 treeNode.open = true，则会直接展开此节点
	 *
	 * 2、叶子节点 treeNode.open = false
	 *
	 * 3、为了解决部分朋友生成 json 数据出现的兼容问题, 支持 "false","true" 字符串格式的数据
	 *
	 * 默认值：false
	 *
	 */
	private boolean open;
	/**
	 * 强制节点的 checkBox / radio 的 半勾选状态。[setting.check.enable = true &
	 * treeNode.nocheck = false 时有效]
	 *
	 * 1、强制为半勾选状态后，不再进行自动计算半勾选状态
	 *
	 * 2、设置 treeNode.halfCheck = false 或 null 才能恢复自动计算半勾选状态
	 *
	 * 3、为了解决部分朋友生成 json 数据出现的兼容问题, 支持 "false","true" 字符串格式的数据
	 *
	 * 默认值：false
	 *
	 */
	private boolean halfCheck;
	/**
	 * 设置节点是否隐藏 checkbox / radio [setting.check.enable = true 时有效]
	 *
	 * 默认值：false
	 *
	 */
	private boolean nocheck;
	/**
	 * 这个字段放置节点的其他信息
	 */
	private Map<String, String> userData = new HashMap();

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public boolean isIsParent() {
		return isParent;
	}

	public void setIsParent(boolean isParent) {
		this.isParent = isParent;
	}

	public boolean isChecked() {
		return checked;
	}

	public void setChecked(boolean checked) {
		this.checked = checked;
	}

	public boolean isChkDisabled() {
		return chkDisabled;
	}

	public void setChkDisabled(boolean chkDisabled) {
		this.chkDisabled = chkDisabled;
	}

	public boolean isHalfCheck() {
		return halfCheck;
	}

	public void setHalfCheck(boolean halfCheck) {
		this.halfCheck = halfCheck;
	}

	public boolean isNocheck() {
		return nocheck;
	}

	public void setNocheck(boolean nocheck) {
		this.nocheck = nocheck;
	}

	public boolean isOpen() {
		return open;
	}

	public void setOpen(boolean open) {
		this.open = open;
	}

	public String getpId() {
		return pId;
	}

	public void setpId(String pId) {
		this.pId = pId;
	}

	public TreeNode setUserData(String key, String value) {
		userData.put(key, value);
		return this;
	}

	public TreeNode setUserData(Map<String, String> userData) {
		this.userData.putAll(userData);
		return this;
	}

	public Map<String, String> getUserData() {
		return userData;
	}

	public String getUserData(String key) {
		return userData.get(key);
	}
}
